from threading import Thread, Lock

"""
多线程时共享全局变量的
多线程无法利用多核CPU的资源，在同一时间只能有一个线程真正执行，只能并发执行
原因是python解释器有一把锁GIL（全局解释器锁）

python线程执行的切换机制：
1、线程子执行遇到IO耗时操作
2、线程执行时间达到一个阈值
"""
a=0
mutex=Lock()
def work1():
    global a
    for i in range(1000000):
        # 通过加锁可以解决资源争夺的问题
        mutex.acquire()
        a+=1
        mutex.release()
    print('work1------a',a)


def work2():
    global a
    for i in range(1000000):
        mutex.acquire()
        a+=1
        mutex.release()
    print('work2------a',a)

if __name__ == '__main__':
    t1=Thread(target=work1)
    t1.start()
    t2=Thread(target=work2)
    t2.start()
    t1.join()
    t2.join()
    print('主线程---全局a：',a)